Conversation
✅ Engine Compatibility
|
|
Note: This flow can be ruesed accross repositories the following way: The caller uses I gave it a try in an external repositorty and it seems to be working correctly: |
|
This is a good idea, but I'm wondering how we can ignore dev-dependencies as discussed last week? The check-engine-light implementation seems rather simple. If the lack of usage is really a concern for us we can also consider implementing such a tool ourselves. I had already started doing that, but then found that my name of choice "check-engine-light", was already taken by a tool with the very same functionality. In general, the check is really easy to implement and more efficient than the proposal here since we only need to parse the lockfile and not install any packages. |
If it's for the control of dependencies, we can leverage the The issue with the listed packages are actually what we currently have- potential lack of update in case of security issues, not a major version (the major version release might not fit our engine). From that perspective, if we want to use a custom script, we have the following options:
Then we'll simply use
|
Just created a separate version with check-engine-light: #1360 |
Reusable workflow that runs
npm ci --dry-runagainst boundary Node versions and posts a consolidated PR comment with incompatible packages. Addsblockedlabel on failure with detailed Github Bot comment with the failing packages and their node engines.Approaches evaluated:
npm ci --engine-strict: runtime check only, stops at first failure, misses remaining incompatible packagescheck-engine(npm): only checks running Node against root engines, doesn't inspect dependency treecheck-engine-light(npm): range-vs-range via semver.subset(), but v0.x, only 4 releases, unstablels-engines(npm): range-vs-range capable, but v0.x, 17-month release gap, 7 prod dependenciesSelected approach: single-job nvm loop using
npm ci --dry-run(without--engine-strict). Reports all EBADENGINE warnings as a table in one PR comment. No extra dependencies, no matrix, no artifacts — just shell and tools already on the runner.Note: NVM seems to come bundled in the GitHub action images
PoC of the implementation: d3xter666/test-ci#1
JIRA: CPOUI5FOUNDATION-1225